package mat;

import org.apache.log4j.Logger;

public class MultiProtocolAuthenticationHandler
{
	protected Logger log;
	
	protected MultiProtocolAuthenticationHandler()
	{
		log = Logger.getLogger(this.getClass());
	}
	
//	protected IVersionedObjectManager<DataConnection> vomDc;
//	
//	public IVersionedObjectManager<DataConnection> getVomDc()
//	{
//		return vomDc;
//	}
//
//	public void setVomDc(IVersionedObjectManager<DataConnection> vomDc)
//	{
//		this.vomDc = vomDc;
//	}
//
//	protected HashMap<String, NtlmPasswordAuthentication> mapServer2SmbAuth = new HashMap<String, NtlmPasswordAuthentication>();
//	
//	public void registerAuth(String Smbserver, NtlmPasswordAuthentication auth)
//	{
//		mapServer2SmbAuth.put(Smbserver, auth);
//	}
//	
//	public NtlmPasswordAuthentication getAuthForSmb(String path)
//	{
//		try
//		{
//			if (!path.startsWith("smb://"))
//				return null;
//			
//			String smbServer = path.substring("smb://".length()).split("/")[0];
//			NtlmPasswordAuthentication res = mapServer2SmbAuth.get(smbServer);
//			if (res != null)
//				return res;
//			
//			if (vomDc == null)
//				return null;
//			
//			VersionedObjectConditions conds = vomDc.getConditions();
//			Condition_String cs = null;
//			for (Condition c : conds.getListCondVo())
//			{
//				if (c.getId().endsWith("dataconn_cifs.Server"))
//				{
//					cs = (Condition_String) c;
//					break;
//				}
//			}
//			
//			cs.setValueAndEnable(smbServer);
//			DataConnection[] ldc = vomDc.getObject(conds, new DummyProgressMonitor());
//			if (ldc == null || ldc.length < 1)
//				return null;
//			
//			DataConnection_Cifs dc = (DataConnection_Cifs)ldc[0];
//			
//			NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(dc.getUserDomain(), dc.getUserName(), dc.getUserPassword());
//			
//			boolean connected = false;
//			for (int i=0; i<10; i++)
//			{
//				try
//				{
//					jcifs.smb.SmbSession.logon(UniAddress.getByName(dc.getServer()), auth);
//					connected = true;
//					break;
//				}
//				catch (Exception e)
//				{
//					log.warn("Attempt " + (i+1) + " / 10 failed", e);
//				}
//			}
//			if (!connected)
//			{
//				jcifs.smb.SmbSession.logon(UniAddress.getByName(dc.getServer()), auth);
//			}
//			
//			mapServer2SmbAuth.put(smbServer, auth);
//			return auth;
//		}
//		catch (Exception e)
//		{
//			log.error("activateAuth: " + path, e);
//		}
//		
//		return null;
//	}
	
	protected boolean disableJcifs = true;
	public boolean isDisableJCifs()
	{
		if (System.getProperty("os.name").contains("Windows"))
			return false;
		
		return false;
	}
	
	//
	// Singleton
	//
	
	protected static MultiProtocolAuthenticationHandler instance;
	
	public static MultiProtocolAuthenticationHandler getInstance()
	{
		return instance; 
	}
	
	static
	{
		instance = new MultiProtocolAuthenticationHandler();
	}

	public String getAuthForSmb(String path)
	{
		// TODO Auto-generated method stub
		return null;
	}
}

